The modern communications era has brought about a tremendous expansion of wireline and wireless networks. Computer networks, television networks, and telephony networks are experiencing an unprecedented technological expansion, fueled by consumer demand. Wireless and mobile networking technologies have addressed related consumer demands, while providing more flexibility and immediacy of information transfer.
Current and future networking technologies continue to facilitate ease of information transfer and convenience to users. Due to the now ubiquitous nature of electronic communication devices, people of all ages and education levels are utilizing electronic devices to communicate with other individuals or contacts, receive services and/or share information, media and other content. One area in which there is a demand to increase ease of information transfer relates to cloud systems which store and share data for consumers of the cloud system.
At present, when using a cloud system for the purpose of storing and sharing data, it is typically expected that the cloud system offer its consumers a common object model for serializing/de-serializing data of the consumers, a common serialization format, a common exchange document, a data modeling language for applications to model the data, Universal Resource Identifier (URI) conventions that describe the addressing of the data in the cloud system, and Rest application programming interfaces (APIs) for storing/modifying the data.
Currently, when using a cloud system for the purpose of storing and sharing data, applications may define their data type in a data model, and may then store instances of this type (also referred to herein as instances or instances of data) in the cloud. The cloud may use the data model to validate the instances. This validation mechanism may lead to improved data quality in the cloud.
In order to facilitate the creation of the data model, the cloud provider typically provides a development environment for application developers. This development environment is generally separate from a production environment and is used for the development of an application(s). Therefore, an application is typically first developed against the development environment, and after the application is tested, the application is deployed onto the production environment. Today, developing the application against the development environment generally first requires the creation of a data model. At present, the data model is typically further used by the production environment to validate instance data. Typically, the data model includes the following.
A type definition and the properties associated with the type. Additionally, the data model may also include access control configurations describing who may access the instances of the type. The various settings for access control typically include public, private, and group access control. In an instance in which public access control is specified in the data model, then everyone is able to retrieve/update/delete instances of the type defined in the data model. In an instance in which private access control is specified in the data model, then typically only the creator may retrieve/update/delete the instances. On the other hand, if group access control has been specified then typically only members of the group may retrieve/delete/update the instances.
The data model may also include indexing information that may govern the creation of indices of the instances of the type stored in the cloud. An index may be created in support for search operations. A typical index that is usually found in data models enables the querying of instances per user. For example, given the existence of such an index, a user of the system may ask the cloud to return all the data the user has created.
Currently, the need for the cloud to have the data model imposes an extra step that application developers need to perform in order to interact with the cloud. In turn, this typically requires that application developers to become familiar with the data modeling language that the cloud exposes. Oftentimes, this may result in significant developer overhead.
Typically, the creation of the data model requires weeks of a developer's time. Moreover, after the developer is finishing creating the data model, the data model is often reviewed by representatives from the cloud providers in order to catch any mistakes.
Current approaches to solving the problem are typically centered on having specialized tools that ease the creation of the data model. For example, application developers and product managers may use worksheets or spreadsheets to define their data models. An example worksheet is shown in table 1 of FIG. 1.
After the worksheet is generated, developers typically represent the generated data model using the data modeling language of the cloud service. Once the data model is checked by representatives of the cloud service, the data model may be loaded into the developer environment. Then, the developer may interact with the cloud to store/retrieve/update instances of the type.
While the use of the worksheet may enable non-engineers, such as for example, product managers to depict the data model, the use of the worksheet may not sufficiently alter the process needed to interact with the cloud environment. That is, the worksheet is simply a tool that facilitates the creation of the data model by non-technical users.
In view of the foregoing drawbacks, there may be a need to provide an efficient and reliable mechanism for facilitating automated learning of a data model for usage in cloud systems.